<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <script>
      /* 
            有如下一个数组
                arr = [1,2,1,3,2,4,5,5,6,7]
            编写代码,去除数组中重复的元素 => [1,2,3,4,5,6,7]
      
        indexOf()
            - 获取元素在数组中第一次出现的索引
                - 参数:
                    1.要查询的元素
                    2.查询的位置
      
        splice()
            - 可以删除,插入,替换数组中的元素
                - 参数:
                    1. 删除的起始位置
                    2. 删除的数量
                    3. 要插入的元素
 */
      const arr2 = [1, 2, 1, 3, 2, 4, 5, 5, 6, 7];
      const arr3 = arr2.slice();

      // //   分别获取数组中的元素
      // for (let i = 0; i < arr2.length; i++) {
      //   // 分别当前值(i)后面的所有值
      //   for (let k = i + 1; k < arr2.length; k++) {
      //       // 判断如果全等于K的值，那么就删除k这次循环的arr[k]的元素,并且为了防止漏
      //     if (arr2[i] === arr2[k]) {
      //       arr2.splice(k, 1);
      //       /* 
      //           没有写k--
      //           当arr2[i] 和arr2[k]相同的时候,会删除k位置的元素,然后导致k+1位置的元素,变成k的元素
      //           [1,2,1,1,3]->[1,2,1,3]
      //           [0,1,2,3,4]->[0,1,2,3]
      //                i=1
      //                k=2
      //                arr2[1](i=1) === arr2[2]
      //                arr[2]的位置这个时候是之前的arr[3]
      //                但是因为循环是k++所以这次的索引判断是
      //                 arr2[1](i=1) === arr2[3]
      //                 所以会导致漏比较的情况
      //                 +一个k--就可以让他再次查询arr[2]从而不会漏


      //       */
      //       k--;
      //     }
      //   }
      // }
       for (let i = 0; i < arr2.length; i++) {
        const index = arr2.indexOf(arr2[i],i+1)
        if(index !== -1)
        {
          arr2.splice(index,1)
          i--
        }
      }
      const arr4 = []
      for (const ele of arr2) {
          if(arr4.indexOf(ele) === -1){
            arr4.push(ele)
          }        
      }

      console.log(arr2);
    </script>
  </head>
  <body></body>
</html>
